﻿using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace VideoReflector.Video
{
    /// <summary>
    /// Interface for controlling playing of tagged clips in a video
    /// </summary>
    public interface IClipStreamer: INotifyPropertyChanged, IDisposable
    {
        /// <summary>
        /// Play (stream) current clip or selection of clips
        /// </summary>
        void Play();

        /// <summary>
        /// Stop playing (streaming) and reset player
        /// </summary>
        void Stop();

        /// <summary>
        /// True if currently playing (streaming) a clip
        /// </summary>
        bool IsPlaying { get; }

        /// <summary>
        /// True if currently stopped (i.e. not playing / streaming and not paused)
        /// </summary>
        bool IsStopped { get; }

        /// <summary>
        /// Index of clip currently being played (streamed)
        /// </summary>
        int ClipNumber { get; }

        /// <summary>
        /// Event raised when the playing clip changes
        /// </summary>
        event EventHandler<PlayingClipChangedEventArgs> ClipChanged;

    }
}
